package com.mx.ipn.escom.wad.proyecto.usuario.model;

import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;

/**
 * Clase que mapea el modelo de un usuario
 * @author jorge
 *
 */
@Entity
@Table(name="usuario")
public class Usuario {
	
	private Integer idUsuario;
	private String nombre;
	private String apPaterno;
	private String apMaterno;
	private String email;
	private String nick;
	private String password;
	private Integer idTipoUsuario;
	private TipoUsuario tipoUsuario;
	
	public Usuario(){}

	/**
	 * @return the idUsuario
	 */
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Id
	@Column(name="id_usuario", nullable = false)
	public Integer getIdUsuario() {
		return idUsuario;
	}

	/**
	 * @param idUsuario the idUsuario to set
	 */
	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}
	
	/**
	 * 
	 * @return String nombre
	 */
	@Column(name="nombre", nullable = false)
	public String getNombre(){
		return nombre;
	}
	
	/**
	 * 
	 * @param String nombre
	 */
	public void setNombre(String nombre){
		this.nombre = nombre;
	}

	/**
	 * @return the apPaterno
	 */
	@Column(name="ap_paterno", nullable = false)
	public String getApPaterno() {
		return apPaterno;
	}

	/**
	 * @param apPaterno the apPaterno to set
	 */
	public void setApPaterno(String apPaterno) {
		this.apPaterno = apPaterno;
	}

	/**
	 * @return the apMaterno
	 */
	@Column(name="ap_materno")
	public String getApMaterno() {
		return apMaterno;
	}

	/**
	 * @param apMaterno the apMaterno to set
	 */
	public void setApMaterno(String apMaterno) {
		this.apMaterno = apMaterno;
	}

	/**
	 * @return the email
	 */
	@Column(name="email", nullable = false)
	public String getEmail() {
		return email;
	}

	/**
	 * @param email the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}
	

	/**
	 * @return the nick
	 */
	@Column(name="nick", nullable = false)
	public String getNick() {
		return nick;
	}

	/**
	 * @param nick the nick to set
	 */
	public void setNick(String nick) {
		this.nick = nick;
	}

	/**
	 * @return the password
	 */
	@Column(name="password", nullable = false)
	public String getPassword() {
		return password;
	}

	/**
	 * @param password the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}
	
	/**
	 * @return the idTipoUsuario
	 */
	@Column(name="id_tipo", nullable = false)
	public Integer getIdTipoUsuario() {
		return idTipoUsuario;
	}

	/**
	 * @param idTipoUsuario the idTipoUsuario to set
	 */
	public void setIdTipoUsuario(Integer idTipoUsuario) {
		this.idTipoUsuario = idTipoUsuario;
	}


	/**
	 * @return the tipoUsuario
	 */
	@ManyToOne
	@JoinColumn(name = "id_tipo", referencedColumnName = "id_tipo", insertable = false, updatable = false) 
	public TipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}

	/**
	 * @param tipoUsuario the tipoUsuario to set
	 */
	public void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}
}
